package com.zmn.oms.dubbo.interfaces.normal.master;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.common.dio.normal.master.WorkContactInfoDIO;
import com.zmn.oms.common.dro.normal.master.NonGridGrabOrderDRO;
import com.zmn.oms.common.dro.normal.master.WorkContactInfoDRO;
import com.zmn.oms.common.dio.normal.query.GrabQueryDIO;
import com.zmn.oms.common.dro.normal.master.GrabOrderDRO;
import com.zmn.oms.common.dro.normal.master.ReworkRefundDRO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 类描述：
 *
 * @author wangxiaokun
 * @since 2021/07/15 14:50
 */
@Api(
        value = "工程师工单查询",
        tags = {"工程师工单查询"}
)
public interface MasterOrderWorkListRemoteService {

    /**
     * 工程师查询抢单列表
     * @param grabQueryDIO
     * @return
     */
    @ApiOperation(
            value = "查询抢单列表",
            response = ResponseDTO.class,
            tags = {"工程师工单查询"}
    )
    ResponseDTO<List<GrabOrderDRO>> listGrabOrderWorkByQuery(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true) GrabQueryDIO grabQueryDIO);

    /**
     * 工程师查询抢单列表
     * @param grabQueryDIO
     * @return
     */
    @ApiOperation(
            value = "查询无网格抢单列表",
            response = ResponseDTO.class,
            tags = {"工程师工单查询"}
    )
    ResponseDTO<List<NonGridGrabOrderDRO>> listNonGridGrabOrderWorkByQuery(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true) GrabQueryDIO grabQueryDIO);

    /**
     * 返修单获取退款配置
     * @param orderId
     * @param workId
     * @return
     */
    @ApiOperation(
            value = "工程师返修单退款方式查询",
            response = ResponseDTO.class,
            tags = {"工程师工单查询"}
    )
    ResponseDTO<ReworkRefundDRO> getReworkRefundConfig(@NotNull(message = "订单号不能为空") @ApiParam(value = "订单号", required = true) Long orderId,
                                                       @NotNull(message = "工单号不能为空") @ApiParam(value = "工单号", required = true) Long workId);

    /**
     * 查询工程师工单联系信息
     * @param workContactInfoDIO
     * @return
     */
    @ApiOperation(
            value = "查询工程师工单联系信息",
            response = ResponseDTO.class,
            tags = {"工程师工单查询"}
    )
    ResponseDTO<WorkContactInfoDRO> getMasterWorkContactInfo(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true) WorkContactInfoDIO workContactInfoDIO);
}
